﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//1.从今天（2025/11/4）开始重新开始学习计算机相关知识，今天学了数据结构中时间复杂度的概念

//阶乘递归Fac，时间复杂度为 O(N)
long long Fac(size_t N)
{
	if (0 == N)
		return 1;
	return Fac(N - 1) * N;
}
//斐波那契递归Fib，，时间复杂度为 O(2的n次方)
long long Fib(size_t N)
{
	if (N < 3)
		return 1;
	return Fib(N - 1) + Fib(N - 2);

}

//二分查找和冒泡排序代码书写
//冒泡排序，时间复杂度为 O(N²)
void BubbleSort(int* a, int n)
{
	assert(a);
	for (size_t end = n; end > 0; --end)
	{
		int exchange = 0;
		for(size_t i = 1;i<end;++i)
		{
			if (a[a - 1] > a[i])
			{
				swap(&a[i - 1], &a[i]);
				exchange = 1;
			}
		
		}
		if (exchange == 0)
			break;

	}
}

//二分查找，和之前学的有点不一样，明天看一下哪里不一样，，时间复杂度为 O(log2N)
int BinarySearch(int* a, int n, int x)
{
	assert(a);
	int begin = 0;
	int end = 0;
	while (begin < end)
	{
		int mid = begin + ((end - begin) >> 1);
		if (a[mid] < x)
			begin = mid + 1;
		else if (a[mid > x])
			end = mid;
		else
			return mid;

	}
	return -1;
}

//2.在chatcpt部署一个微信简单的财务管理系统（写到了csdn里面）